/* * @Author: 李佐宁 * @Description: * @Date: 2023-01-13 08:59:36 * @LastEditTime: 2023-03-08 20:49:19 * @LastEditors: 李佐宁 */ export default { //自定义节流操作 preventReClick: { mounted(el: any, binding: any) { el.addEventListener("click", () => { if (!el.disabled) { el.disabled = true; setTimeout(() => { el.disabled = false; }, binding.value || 200); //200ms间隔时间 } }); }, }, drag: { // 指令的定义 mounted: function (el) { let x = 0; let y = 0; let l = 0; let t = 0; let isDown = false; const elWidth = el.clientWidth; const elParentWidth = el.parentElement.clientWidth; let percent = el.parentElement.clientWidth / el.clientWidth; document.getElementById("yaScrollBar")!.style.width = (el.parentElement.clientWidth / el.clientWidth) * el.parentElement.clientWidth + "px"; //鼠标按下事件 el.onmousedown = function (e) { //获取x坐标和y坐标 x = e.clientX; y = e.clientY; //获取左部和顶部的偏移量 l = el.offsetLeft; t = el.offsetTop; //开关打开 isDown = true; //设置样式 el.style.cursor = "move"; }; //鼠标移动 el.onmousemove = function (e) { if (isDown == false) { return; } //获取x和y let nx = e.clientX; let ny = e.clientY; //计算移动后的左偏移量和顶部的偏移量 let nl = nx - (x - l); let nt = ny - (y - t); console.log(el.parentElement.clientWidth / el.clientWidth); console.log(el.clientWidth, el.parentElement.clientWidth, nl); document.getElementById("yaScrollBar")!.style.right = (el.parentElement.clientWidth / el.clientWidth - percent) * 100 + "%"; if (nl > 0) return; if (nl < elParentWidth - elWidth) return; el.style.left = nl + "px"; // el.style.top = nt + "px"; }; //鼠标抬起事件 el.onmouseup = function () { //开关关闭 isDown = false; el.style.cursor = "default"; }; }, }, dragScoll: { // 指令的定义 mounted: function (el) { let x = 0; let y = 0; let l = 0; let t = 0; let isDown = false; const elWidth = el.clientWidth; //鼠标按下事件 el.onmousedown = function (e) { //获取x坐标和y坐标 x = e.clientX; //获取左部和顶部的偏移量 l = el.offsetLeft; //开关打开 isDown = true; //设置样式 el.style.cursor = "move"; }; // 鼠标移动事件 el.onmousemove = function (e) { if (isDown == false) { return; } //获取x和y let nx = e.clientX; //计算移动后的左偏移量和顶部的偏移量 let nl = nx - (x - l); console.log(nl); }; }, }, };